--- 模块功能：ST7701S驱动芯片LCD命令配置
-- @author openLuat
-- @module ui.mipi_lcd_ST7701S
-- @license MIT
-- @copyright openLuat
-- @release 2022.01.07
--[[
注意：MIPI接口

module(...,package.seeall)
]] --[[
函数名：init
功能  ：初始化LCD参数
参数  ：无
返回值：无
]] local function init()
    local para = {
        width = 480, -- 分辨率宽度，
        height = 854, -- 分辨率高度
        bpp = 16, -- MIPI LCD直接写16，暂不支持其他配置
        bus = disp.BUS_MIPI, -- LCD专用SPI引脚接口，不可修改
        xoffset = 0, -- X轴偏移
        yoffset = 0, -- Y轴偏移
        freq = 125000000, -- mipi时钟最高为500000000
        pinrst = pio.P0_20, -- reset，复位引脚,MIPI屏幕必须填写
        pinrs = 0x000300ffff, -- mipi不需要rs脚，直接写0x000300ffff
        -- continue_mode = 1,
        -- 初始化命令
        -- 前两个字节表示类型：0001表示延时，0000或者0002表示命令，0003表示数据
        -- 延时类型：后两个字节表示延时时间（单位毫秒）
        -- 命令类型：后两个字节命令的值
        -- 数据类型：后两个字节数据的值
        -- 现在MIPI LCD 只支持,lane 2线,RGB565格式

        initcmd = {
            0x000200FF, 0x00030077, 0x00030001, 0x00030000, 0x00030000,
            0x00030013, 0x000200EF, 0x00030008, 0x000200FF, 0x00030077,
            0x00030001, 0x00030000, 0x00030000, 0x00030010, 0x000200C0,
            0x000300E9, 0x00030003, 0x000200C1, 0x0003000C, 0x00030002,

            0x000200C2, 0x00030010, 0x00030006, 0x000200CC, 0x00030038,

            0x000200B0, 0x00030040, 0x0003000B, 0x00030058, 0x0003000C,
            0x00030011, 0x00030006, 0x0003000B, 0x00030008, 0x00030009,
            0x00030026, 0x00030006, 0x00030015, 0x00030018, 0x0003006A,
            0x0003006E, 0x0003004F, 0x000200B1, 0x00030040, 0x00030011,
            0x00030057, 0x0003000D, 0x00030011, 0x00030007, 0x0003000B,
            0x00030009, 0x00030008, 0x00030026, 0x00030005, 0x000300D3,
            0x0003000D, 0x0003006B, 0x0003006E, 0x0003004F, 0x000200FF,
            0x00030077, 0x00030001, 0x00030000, 0x00030000, 0x00030011,

            0x000200B0, 0x00030056, 0x000200B1, 0x0003003A, 0x000200B2,
            0x00030087, 0x000200B3, 0x00030080, 0x000200B5, 0x0003004D,

            0x000200B7, 0x00030085, 0x000200B8, 0x00030010, 0x000200B9,
            0x00030010, 0x000200BC, 0x00030003, 0x000200C0, 0x00030089,

            0x000200C1, 0x00030078, 0x000200C2, 0x00030078, 0x000200D0,
            0x00030088, 0x000200E0, 0x00030000, 0x00030000, 0x00030002,

            0x000200E1, 0x00030004, 0x00030000, 0x00030000, 0x00030000,
            0x00030005, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
            0x00030020, 0x00030020, 0x000200E2, 0x00030000, 0x00030000,
            0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
            0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
            0x00030000, 0x000200E3, 0x00030000, 0x00030000, 0x00030033,
            0x00030000, 0x000200E4, 0x00030022, 0x00030000, 0x000200E5,
            0x00030004, 0x0003005C, 0x000300A0, 0x000300A0, 0x00030006,
            0x0003005C, 0x000300A0, 0x000300A0, 0x00030000, 0x00030000,
            0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
            0x00030000, 0x000200E6, 0x00030000, 0x00030000, 0x00030033,
            0x00030000, 0x000200E7, 0x00030022, 0x00030000, 0x000200E8,
            0x00030005, 0x0003005C, 0x000300A0, 0x000300A0, 0x00030007,
            0x0003005C, 0x000300A0, 0x000300A0, 0x00030000, 0x00030000,
            0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000,
            0x00030000, 0x000200EB, 0x00030002, 0x00030000, 0x00030040,
            0x00030040, 0x00030000, 0x00030000, 0x00030000, 0x000200EC,
            0x00030000, 0x00030000, 0x000200ED, 0x000300FA, 0x00030045,
            0x0003000B, 0x000300FF, 0x000300FF, 0x000300FF, 0x000300FF,
            0x000300FF, 0x000300FF, 0x000300FF, 0x000300FF, 0x000300FF,
            0x000300FF, 0x000300B0, 0x00030054, 0x000300AF, 0x000200EF,
            0x00030008, 0x00030008, 0x00030008, 0x00030045, 0x0003003F,
            0x00030054, 0x000200FF, 0x00030077, 0x00030001, 0x00030000,
            0x00030000, 0x00030000, 0x00020011, 0x00020029

        },
        -- 休眠命令
        sleepcmd = {0x00020028, 0x00020010},
        -- 唤醒命令
        wakecmd = {0x00020011, 0x00020029}
    }
    disp.init(para)
    disp.clear()
    disp.update()
end

-- VLCD电压域配置
pmd.ldoset(15, pmd.LDO_VLCD)

-- 背光配置
function backlightopen(on)
    if on then
        pins.setup(pio.P0_21, 1)
        log.info("mipi_lcd_GC9503V 你打开了背光")
    else
        pins.setup(pio.P0_21, 0)
        log.info("mipi_lcd_GC9503V 你关闭了背光")
    end
end
backlightopen(true)
-- 初始化
init()
